home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / comm / irc / Babelfish.lha / Babelfish.amirx next >
Text File  |  2002-05-28  |  4KB  |  170 lines

  1. /* Babelfish translator script for AmIRC ©2002 Michael Trebilcock */
  2. Options Results
  3. Signal On Syntax
  4. Parse Arg Lang" "Text
  5.  
  6. /* Configuration */
  7. TransOnly="0" /* Show translation only? 1 = Yes, 0 = No */
  8. SendToWin="0" /* Send translation to active window? 1 = Yes, 0 = No */
  9. /* End Configuration */
  10.  
  11. /** DON'T EDIT BELOW THIS LINE **/
  12.  
  13. Override="0";Nick=""
  14. IF Left(Lang,1)="\" THEN DO
  15.  Lang=SubStr(Lang,2);Override="1"
  16.  IF Left(Text,1)="<"&Right(Word(Text,1),1)=">" THEN DO
  17.   Length=Length(Word(Text,1))
  18.   Nick=SubStr(Strip(Word(Text,1),,">"),2)
  19.   Text=SubStr(Text,Length+2)
  20.  End
  21. End
  22.  
  23. Port=Address()
  24.  
  25. X01="0D"x
  26.  
  27. EchoTxt="Babelfish"
  28.  
  29. IF Lang=""|Lang="?"|Upper(Lang)="HELP" THEN DO
  30.  Call cEcho("Usage: /rx Babelfish <en_fr/en_de/en_it/en_pt/en_es/fr_en/de_en/it_en/pt_en/es_en/de_fr/fr_de/ru_en/en_ja/en_ko/en_zh/ja_en/ko_en/zh_en> <text>")
  31.  Call cEcho("")
  32.  Call cEcho("en_fr English to French")
  33.  Call cEcho("en_de English to German")
  34.  Call cEcho("en_it English to Italian")
  35.  Call cEcho("en_pt English to Portuguese")
  36.  Call cEcho("en_es English to Spanish")
  37.  Call cEcho("fr_en French to English")
  38.  Call cEcho("de_en German to English")
  39.  Call cEcho("it_en Italian to English")
  40.  Call cEcho("pt_en Portuguese to English")
  41.  Call cEcho("es_en Spanish to English")
  42.  Call cEcho("de_fr German to French")
  43.  Call cEcho("fr_de French to German")
  44.  Call cEcho("ru_en Russian to English")
  45.  Call cEcho("en_ja English to Japanese")
  46.  Call cEcho("en_ko English to Korean")
  47.  Call cEcho("en_zh English to Chinese")
  48.  Call cEcho("ja_en Japanese to English")
  49.  Call cEcho("ko_en Korean to English")
  50.  Call cEcho("zh_en Chinese to English")
  51.  Exit
  52. End
  53.  
  54. Parse Var Lang SLang"_"ELang
  55. Call Lang(SLang)
  56. Call Lang(ELang)
  57. EchoTxt="Babelfish"
  58.  
  59. IF ~Open(TCP,"TCP:babelfish.altavista.com/80","RW") THEN DO
  60.  Call cEcho("Unable to connect to babelfish..")
  61.  Exit
  62. End
  63.  
  64. CR="0D"x
  65.  
  66. ToSend="doit=done&tt=urltext&urltext="Text"&url=http%3A%2F%2F&lp="Lang
  67. Length=Length(ToSend)
  68.  
  69. Call WriteLn(TCP,"POST /tr HTTP/1.0"CR)
  70. Call WriteLn(TCP,"Host: babelfish.altavista.com"CR)
  71. Call WriteLn(TCP,"Content-Type: application/x-www-form-urlencoded"CR)
  72. Call WriteLn(TCP,"Content-Length: "Length""CR)
  73. Call WriteLn(TCP,CR)
  74. Call WriteLn(TCP,ToSend""CR)
  75.  
  76. Output=Word(ReadLn(TCP),2)
  77.  
  78. IF Output~="200" THEN DO
  79.  Call cEcho("Unable to translate, error "Output)
  80.  Call CloseTCP()
  81. End
  82.  
  83. Call Lang(SLang)
  84. IF TransOnly="0" THEN Call cEcho(Text)
  85. Call Lang(ELang)
  86.  
  87. DO UNTIL Word(Output,1)="<textarea"|Pos("td bgcolor=white",Output)>0|EOF(TCP)
  88.  Output=Strip(ReadLn(TCP),,X01)
  89. End
  90.  
  91. IF EOF(TCP) THEN DO
  92.  EchoTxt="Babelfish"
  93.  Call cEcho("Unable to translate, server didn't accept the arguments")
  94.  Call CloseTCP()
  95. End
  96.  
  97. IF Word(Output,1)="<textarea" THEN DO
  98.  IF Right(Output,11)="</textarea>" THEN Output=""
  99.  ELSE Output=SubStr(Output,Pos(">",Output)+1)
  100. End
  101. ELSE DO
  102.  Output=SubStr(Output,Pos(">",Output)+1)
  103.  Output2=Strip(ReadLn(TCP),,X01)
  104.  IF Right(Output,5)~="</td>" THEN Output=Output" "Output2
  105.  IF Right(Output2,5)~="</td>" THEN DO
  106.   DO UNTIL Right(Output2,5)="</td>"
  107.    Output2=Strip(ReadLn(TCP),,X01)
  108.    Output=Output" "Output2
  109.   End
  110.  End
  111.  IF Left(Output,1)=" " THEN Output=SubStr(Output,2)
  112.  Output=SubStr(Output,1,Length(Output)-5)
  113. End
  114. Success="1"
  115. Call Algo(Output)
  116. IF Nick~="" THEN EchoTxt=Nick
  117. Call cEcho(Output)
  118. Call CloseTCP()
  119. Exit
  120.  
  121. cEcho:
  122. IF Port="REXX" THEN SAY "«"EchoTxt"» "Arg(1)
  123. ELSE DO
  124.  IF SendToWin="1"&Success="1"&Override="0" THEN "SAY "Arg(1)
  125.  ELSE "ECHO P="d2c(27)"b«"EchoTxt"» TEXT="Arg(1)
  126. End
  127. Return 0
  128.  
  129. CloseTCP:
  130. Call Close(TCP)
  131. Exit
  132.  
  133. Syntax:
  134. EchoTxt="Syntax"
  135. Call cEcho("Command on line" SIGL "returned" RC ":" errortext(rc) sourceline(SIGL))
  136. Exit
  137.  
  138. Algo:
  139. Output=Arg(1)
  140. DO UNTIL Char="0"
  141.  Char=Pos("Ã",Output)
  142.  IF Char>0 THEN DO
  143.   First=SubStr(Output,1,Char-1)
  144.   Next=SubStr(Output,Char+2)
  145.   Char=d2c(c2d(SubStr(Output,Char+1,1))+64)
  146.   Output=First""Char""Next
  147.  End
  148. End
  149. Return 0
  150.  
  151. Lang:
  152. SELECT
  153.  WHEN Arg(1)="en" THEN EchoTxt="English"
  154.  WHEN Arg(1)="fr" THEN EchoTxt="French"
  155.  WHEN Arg(1)="de" THEN EchoTxt="German"
  156.  WHEN Arg(1)="it" THEN EchoTxt="Italian"
  157.  WHEN Arg(1)="pt" THEN EchoTxt="Portuguese"
  158.  WHEN Arg(1)="es" THEN EchoTxt="Spanish"
  159.  WHEN Arg(1)="ru" THEN EchoTxt="Russian"
  160.  WHEN Arg(1)="ja" THEN EchoTxt="Japanese"
  161.  WHEN Arg(1)="ko" THEN EchoTxt="Korean"
  162.  WHEN Arg(1)="zh" THEN EchoTxt="Chinese"
  163.  OTHERWISE DO
  164.   EchoTxt="Babelfish"
  165.   Call cEcho("Invalid language "Arg(1))
  166.   Exit
  167.  End
  168. End
  169. Return 0
  170.